//
//  SwiftUIView_Animation.swift
//  SwiftUIPractice
//
//  Created by 天快要黑了 (external - Project) on 2024/9/13.
//

import SwiftUI

struct SwiftUIView_Animation: View {
    
    @State var isAnimated = false

    @State var isFuckinged = false
    
    var body: some View {
     
        VStack {
            
            Button("按钮") {
                
                // 在swiftUI中, 添加动画 就是这么一句  withAnimation , 这这个代码块里面, 放了这个属性
                // 任何受到这个属性影响的东西, 都将进行动画.
                withAnimation(.default) {
                    isAnimated.toggle()
                }

                //其他的动画属性
                /*
                 withAnimation(.default.delay(2)) {
                 }
                 withAnimation(.default.repeatCount(5, autoreverses: true)) {
                 }
                 withAnimation(.default.repeatForever()) {
                 }
                 */
            }
            
            Spacer()
            
            RoundedRectangle(cornerRadius: isAnimated ? 50: 25)
                .fill(isAnimated ? Color.red : Color.green)
                .frame(width: isAnimated ? 100 : 300, height:  isAnimated ? 100 : 300)
                .rotationEffect(Angle(degrees: isAnimated ? 360 : 0))  //旋转角度 ?
                .offset(y: isAnimated ? 300 : 0)
            
            Spacer()
        }
        
        
        //另一种写动画的方法是, 把这个动画属性加在 控件的后面.  // 但是这种写法不建议
        VStack {
            Button("按钮") {
                isFuckinged.toggle()
            }
            Spacer()
            RoundedRectangle(cornerRadius: isFuckinged ? 50: 25)
                .fill(isFuckinged ? Color.red : Color.green)
                .frame(width: isFuckinged ? 100 : 300, height:  isFuckinged ? 100 : 300)
                .rotationEffect(Angle(degrees: isFuckinged ? 360 : 0))  //旋转角度 ?
                .offset(y: isFuckinged ? 100 : 0)
                .animation(
                    //只要这个矩形发生任何改变? 就会触发矩形的动画.
                    Animation.default.repeatForever(autoreverses: false)
                )
            
            Spacer()
        }
        
    }
}

#Preview {
    SwiftUIView_Animation()
}
